/**
 *
 */
package br.gov.ms.tce.cjur.service.impl;

import javax.inject.Inject;
import javax.validation.Validator;

import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.userdetails.User;

import br.gov.ms.tce.bean.comum.PessoaFisica;
import br.gov.ms.tce.bean.comum.Usuario;
import br.gov.ms.tce.modelo.dao.UsuarioDAO;

/**
 * @author Anderson Paulino
 * @date 01/08/2011
 */
public class AbstractService {

	@Inject
	private UsuarioDAO usuarioDAO;
	
	@Inject private Validator validator;

	private Usuario usuarioAutenticado;
	
	

	/**
	 * Retorna o usuário autenticado.
	 * 
	 * @return Usuario
	 */
	public Usuario getUsuarioAutenticado() {

		if (usuarioAutenticado == null) {

			Authentication authentication = (Authentication) SecurityContextHolder.getContext()
					.getAuthentication();
			if (authentication != null) {
				User user = (User) authentication.getPrincipal();
				usuarioAutenticado = usuarioDAO.findByLoginAndSenha(user.getUsername(),
						user.getPassword());

			}

			

		}
		return usuarioAutenticado;
	}
	
	/**
	 * Retorna a pessoa fisica do usuário autenticado.
	 * @return
	 */
	public PessoaFisica getPessoaFisicaAutenticado(){
		PessoaFisica pf = null;
		if(getUsuarioAutenticado() != null)
			pf = getUsuarioAutenticado().getPessoaFisica();
		
		return pf;
	}

	/**
	 * @return Retorna o valor da propriedade validator
	 */
	public Validator getValidator() {
		return validator;
	}

	/**
	 * @param Configura o valor da propriedade validator
	 */
	public void setValidator(Validator validator) {
		this.validator = validator;
	}
	
	

}
